Method of targeted ad insertion using HTTP live streaming protocol

ABSTRACT

A content delivery system and method that receives a request for a content stream that includes splice points. The method receives a playlist that includes an ordered list of media segment files that represent the content stream, and splice point tags, where generation of the media segment files aligns segment boundaries with the splice points in the content stream, and where each splice point tag is in a location in the playlist that corresponds to the position of one of the splice points in the content stream. The method identifies an insertion position in the playlist based on the location of the splice point tags, selects an advertisement segment, inserts the advertisement segment at the insertion position to create a modified playlist, removes the splice point tags from the modified playlist, and sends the modified playlist to the video display device.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.12/956,403, filed Nov. 30, 2010, which is hereby incorporated byreference herein in its entirety.

BACKGROUND

HTTP live streaming is a media streaming communications protocol fordelivering video content using extended M3U playlists and a list ofmultimedia chunk files. The multimedia data is specified by a UniversalResource Identifier (URI) to a playlist file (i.e., an ordered list ofmedia URIs and informational tags). Each media URI refers to a mediafile which is a segment of a single contiguous stream. To play thestream, a client device first obtains the playlist file and then obtainsand plays each media file in the playlist. HTTP live streaming does notdescribe or address the replacement or substitution of the multimediachunk files, or advertisement insertion in the list of multimedia chunkfiles.

A current focus for the MSO is the development of targeted advertisementtechnology (i.e., advertisements that are placed so as to reachconsumers based on various traits such as demographics, purchasehistory, or observed behavior). The Society of Cable TelecommunicationsEngineers (SCTE) developed and published SCTE 35, the standard thatdefines the Moving Picture Experts Group (MPEG) format MPEG-2 streamsplicing for the purpose of digital program insertion. SCTE 35 definesthe messages and structure that allow a multiple system operator (MSO)to insert (i.e., splice) advertisements and other content types into avideo broadcast stream.

There is a need for a method and system to translate splice points in acontent stream into playlist tags for HTTP live streaming, to align thesplice points with the segment media file during encoding ortranscoding, and to support the implementation of advertisementinsertion or replacement by inserting advertisement segments orreplacing an existing advertisement segments with targeted advertisementsegments. The presently disclosed invention satisfies this demand.

SUMMARY

Aspects of the present invention provide a content delivery system andmethod that receives a request for a content stream that includes splicepoints. The method receives a playlist that includes an ordered list ofmedia segment files that represent the content stream, and splice pointtags, where generation of the media segment files aligns segmentboundaries with the splice points in the content stream, and where eachsplice point tag is in a location in the playlist that corresponds tothe position of one of the splice points in the content stream. Themethod identifies an insertion position in the playlist based on thelocation of the splice point tags, selects an advertisement segment,inserts the advertisement segment at the insertion position to create amodified playlist, removes the splice point tags from the modifiedplaylist, and sends the modified playlist to the video display device.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a network diagram that illustrates one embodiment of thehardware components of a system that performs the present invention.

FIG. 2 is a block diagram that illustrates, in detail, one embodiment ofthe hardware components shown in FIG. 1.

FIG. 3 illustrates one embodiment of a playlist generated by the priorart.

FIG. 4 illustrates one embodiment of a playlist generated by thehardware components shown in FIG. 1.

FIG. 5 illustrates one embodiment of a playlist generated by thehardware components shown in FIG. 1.

FIG. 6 is a flow diagram that illustrates a method according to oneembodiment of the present invention.

DETAILED DESCRIPTION

FIG. 1 is a network diagram that illustrates one embodiment of thehardware components of a system that performs the present invention. Acontent delivery system 100 includes a video encoder 130, contentmanager 150, content delivery network 160, and customer premisesequipment 170. The content manager 150 controls the content processingperformed by the video encoder 130 to receive the video content 110 andadvertisement content 120 and generate the playlist and media files 140,and the delivery of the playlist and media files 140 to the customerpremises equipment 170 via the content delivery network 160. The contentdelivery system 100 shown in FIG. 1 may include any number ofinterconnected video encoders 130, content managers 150, contentdelivery networks 160, and customer premises equipment 170.

The video encoder 130, or transcoder, is a computing device thatreceives the video content 110 and advertisement content 120. In oneembodiment, the video content 110 and advertisement content 120 areMPEG-2 transport streams, and the video content 110 includes SCTE 35splice points. The splice points are an indicator of advertisementinsertion in the transport streams, or the beginning or end of anadvertisement media segment. For example, if a first splice pointindicates an advertisement insertion between two media units in thetransport streams, the second splice point and the third splice pointare the indication of start and stop location of an advertisement mediaunit. The video encoder 130 segments the video content 110 andadvertisement content 120 into a series of media file segments, andgenerates a playlist and list of media segment files 140. In oneembodiment, the playlist and list of media files 140 is an HTTP livestreaming protocol playlist and a list of media segment files. When thevideo encoder 130 segments the video content 110 and generates theplaylist, it aligns (i.e., lines up) the splice points in the contentstream with the boundaries of the media segment files. In general, allof the media segment files are the same length according to apre-defined average duration; however, the aligning of the splice pointsmay cause the last media segment file before a splice point to have ashorter length. An advantage of aligning the splice points is that thesplice point will occur before or after a media segment file, but notduring the streaming of a media segment file.

The content manager 150 is a computing device that controls the contentprocessing performed by the video encoder 130, and the delivery of theprocessed content to the customer premises equipment 170. In addition,the content manager 150 manages the metadata for the video content 110and advertisement content 120, and makes targeted advertisementinsertion and advertisement replacement decisions.

The content delivery network 160, in one embodiment, is a publiccommunication network or wide area network (WAN). The present inventionalso contemplates the use of comparable network architectures.Comparable network architectures include the Public Switched TelephoneNetwork (PSTN), a public packet-switched network carrying data and voicepackets, a wireless network, and a private network. A wireless networkincludes a cellular network (e.g., a Time Division Multiple Access(TDMA), Code Division Multiple Access (CDMA), or Orthogonal FrequencyDivision Multiplexing (OFDM) network), a satellite network, and awireless Local Area Network (LAN) (e.g., a wireless fidelity (Wi-Fi)network). A private network includes a LAN, a Personal Area Network(PAN) such as a Bluetooth network, a wireless LAN, a Virtual PrivateNetwork (VPN), an intranet, or an extranet. An intranet is a privatecommunication network that provides an organization such as acorporation, with a secure means for trusted members of the organizationto access the resources on the organization's network. In contrast, anextranet is a private communication network that provides anorganization, such as a corporation, with a secure means for theorganization to authorize non-members of the organization to accesscertain resources on the organization's network. The system alsocontemplates network architectures and protocols such as Ethernet,Gigabit Ethernet, Internet Protocol, and Transmission Control Protocol.In various embodiments, the content delivery network 160 will support avariety of network interfaces, including 802.3ab/u/etc., Multimedia overCoax Alliance (MoCA), and 801.11.

The customer premises equipment 170 is a computing device that receives,decodes, and displays data and video content on a video display such asa television. In one embodiment, the customer premises equipment 170 isa set-top box, digital video recorder, home media server, or the like.In one embodiment, the customer premises equipment 170 receives the dataand video content as an HTTP live streaming protocol playlist and a listof media segment files.

FIG. 2 is a block diagram that illustrates, in detail, one embodiment ofthe hardware components shown in FIG. 1. In particular, FIG. 2illustrates the hardware components and software comprising the videoencoder 130, content manager 150, and customer premises equipment 170shown in FIG. 1.

The video encoder 130, in one embodiment, is a general-purpose computingdevice that performs the present invention. A bus 205 is a communicationmedium that connects a processor 210, data storage device 215 (such as aSerial ATA (SATA) hard disk drive, optical drive, Small Computer SystemInterface (SCSI) disk, flash memory, or the like), communicationinterface 220, and memory 225 (such as Random Access Memory (RAM),Dynamic RAM (DRAM), non-volatile computer memory, flash memory, or thelike). The communication interface 220 connects the video encoder 130 tothe content manager 150, and allows the video encoder 130 to receive thevideo content 110 and advertisement content 120, and generate theplaylist and media files 140. In one embodiment, the implementation ofthe present invention on the video encoder 130 is anapplication-specific integrated circuit (ASIC).

The processor 210 performs the disclosed methods by executing thesequences of operational instructions that comprise each computerprogram resident in, or operative on, the memory 225. The reader shouldunderstand that the memory 225 may include operating system,administrative, and database programs that support the programsdisclosed in this application. In one embodiment, the configuration ofthe memory 225 of the video encoder 130 includes a media filesegmentation and playlist generation program 226 that performs themethods of the present invention disclosed in detail in FIG. 6. When theprocessor 210 performs the disclosed methods, it stores intermediateresults in the memory 225 or data storage device 215. In anotherembodiment, the memory 225 may swap programs, or portions thereof, inand out of the memory 225 as needed, and thus may include fewer than allof these programs at any one time.

The content manager 150, in one embodiment, is a general-purposecomputing device that performs the present invention. A bus 230 is acommunication medium that connects a processor 235, data storage device240 (such as a Serial ATA (SATA) hard disk drive, optical drive, SmallComputer System Interface (SCSI) disk, flash memory, or the like),communication interface 245, and memory 250 (such as Random AccessMemory (RAM), Dynamic RAM (DRAM), non-volatile computer memory, flashmemory, or the like). The communication interface 245 connects thecontent manager 150 to the video encoder 130 and the content deliverynetwork 160, and allows the content manager 150 to receive the playlistand media files 140. In one embodiment, the implementation of thepresent invention on the content manager 150 is an application-specificintegrated circuit (ASIC).

The processor 235 performs the disclosed methods by executing thesequences of operational instructions that comprise each computerprogram resident in, or operative on, the memory 250. The reader shouldunderstand that the memory 250 may include operating system,administrative, and database programs that support the programsdisclosed in this application. In one embodiment, the configuration ofthe memory 250 of the content manager 150 includes an advertisementinsertion program 251 that performs the methods of the present inventiondisclosed in detail in FIG. 6. When the processor 235 performs thedisclosed methods, it stores intermediate results in the memory 250 ordata storage device 240. In another embodiment, the memory 250 may swapprograms, or portions thereof, in and out of the memory 250 as needed,and thus may include fewer than all of these programs at any one time.

The customer premises equipment 170, in one embodiment, is ageneral-purpose computing device that performs the present invention. Abus 255 is a communication medium that connects a processor 260, datastorage device 265 (such as a Serial ATA (SATA) hard disk drive, opticaldrive, Small Computer System Interface (SCSI) disk, flash memory, or thelike), communication interface 270, video output processing 275, andmemory 280 (such as Random Access Memory (RAM), Dynamic RAM (DRAM),non-volatile computer memory, flash memory, or the like). Thecommunication interface 270 connects the customer premises equipment 170to the content data network 160. The video output processing 275connects the customer premises equipment 170 to a display device such asa television 285, and sends the video content that the television 285screen displays. In one embodiment, the implementation of the presentinvention on the customer premises equipment 170 is anapplication-specific integrated circuit (ASIC).

The processor 260 performs the disclosed methods by executing thesequences of operational instructions that comprise each computerprogram resident in, or operative on, the memory 280. The reader shouldunderstand that the memory 280 may include operating system,administrative, and database programs that support the programsdisclosed in this application. In one embodiment, the configuration ofthe memory 280 of the customer premises equipment 170 includes anadvertisement insertion program 281 that performs the methods of thepresent invention disclosed in detail in FIG. 6. When the processor 260performs the disclosed methods, it stores intermediate results in thememory 280 or data storage device 265. In another embodiment, the memory280 may swap programs, or portions thereof, in and out of the memory 280as needed, and thus may include fewer than all of these programs at anyone time.

FIG. 3 illustrates one embodiment of a playlist generated by the priorart. In particular, the playlist illustrated in FIG. 3 is an extendedM3U playlist and an ordered list of media chunk files generated by aprior art encoder. When a receiving device, such as the customerpremises equipment 170, requests a sequential multimedia streamingsession, it downloads an extended M3U playlist, such as the playlistshown in FIG. 3, which contains the metadata that identifies the varioussub-streams which are available. M3U is a computer file format thatstores multimedia playlists a plain text file that specifies thelocations of one or more multimedia files that a media player shouldplay. Each line in an M3U file carries one specification that includeseither an absolute local pathname, a local pathname relative to the M3Ufile location, or a URL. The M3U file can also include comments,prefaced by the “#” character, however in extended M3U, the “#”character also introduces extended M3U directives.

The customer premises equipment 170 receives a uniform resource location(URL) for the playlist shown in FIG. 3. When the customer premisesequipment 170 interprets the playlist, it starts to download the mediafiles one by one following the sequence indicated by the“#EXT-X-MEDIA-SEQUENCE” tag (i.e., fileSequence2680.ts,fileSequence2681.ts, and fileSequence2682.ts). An advantage of using theplaylist is that the customer premises equipment 170 can start playingthe downloaded files while it is downloading the subsequence files,thereby achieving the effect of media live streaming. One skilled in theart will understand that even though FIG. 3 shows three media segmentfiles in a presentation sequence, the number of media segment files in apresentation sequence is not limited.

The HTTP live streaming protocol specifies that each media file in aplaylist is a segment of the overall presentation and must be formattedas an MPEG-2 Transport Stream, and that all media files in the playlistmust have the same format. Thus, in one embodiment, the media filesspecified in the playlist shown in FIG. 3 (i.e., fileSequence2680.ts,fileSequence2681.ts, and fileSequence2682.ts) are MPEG-2 TransportStream media files. Furthermore, any media content that the presentinvention inserts into an HTTP live streaming playlist, or uses toreplace a media segment in an HTTP live streaming playlist, must also beformatted as an MPEG-2 Transport Stream, and have the same format as theother media segment files in the playlist.

FIG. 4 illustrates one embodiment of a playlist generated by thehardware components shown in FIG. 1. In particular, FIG. 4 illustratesthe extended M3U playlist shown in FIG. 3 that includes splice points onthe assumption that the middle media segment file (i.e.,fileSequence2681.ts) is the advertisement media.

The present invention relies upon the description in SCTE 35 of MPEG-2stream splicing for the purpose of digital program insertion.Specifically, the present invention relies upon the definition in SCTE35 of IN POINT, OUT POINT, PROGRAM IN POINT, PROGRAM OUT POINT, andPROGRAM SPLICE POINT to support advertisement splicing. The SCTE 35splice points are the indicator of advertisement insertion, or beginningor end of an advertisement media unit. In one embodiment, the firstsplicing point is an advertisement insertion location between two mediaunits, and the second and third splicing points are the indication ofthe start and stop location of the advertisement media unit.

To support advertisement insertion or advertisement replacement, thepresent invention aligns the splice points with the media segment fileswhen the video encoder 130 generates the media segment files. Since allof the media segment files in a presentation are typically the samelength based on a pre-defined average duration, when the presentinvention aligns the splicing points, the last media segment file beforea splicing point may have a shorter than normal length. This isacceptable, however, because the playlist contains individual mediasegment tags (i.e., the EXTINF tag) that describe the duration for eachmedia segment file. When the media segment files of HTTP live streaminghave been aligned with the splicing points carried by the original mediasource, it also indicates where it is in the playlist file to let thedownstream component (i.e., the content manager 150, or customerpremises equipment 170) perform an advertisement insertion oradvertisement replacement. The present invention achieves this byintroducing a new HTTP live streaming tag, EXT-X-SPLICE, thatrepresents, and corresponds to the splice points defined in SCTE 35. TheEXT-X-SPLICE tag indicates the splicing point between two media segmentfiles in an HTTP live streaming playlist and has the format“#EXT-X-SPLICE:<IN|OUT|INOUT>”. Thus, the EXT-X-SPLICE:IN tag matches tothe SCTE 35 IN POINT, the EXT-X-SPLICE:OUT tag matches to the SCTE 35OUT POINT, and the EXT-X-SPLICE:INOUT tag is used for program insertionwhen an SCTE 35 OUT POINT and IN POINT are co-located (i.e., a singlepresentation unit boundary may serve as both a safe place to leave acontent stream program and a safe place to enter it).

FIG. 5 illustrates one embodiment of a playlist generated by thehardware components shown in FIG. 1. In particular, FIG. 5 illustratesthe extended M3U playlist shown in FIG. 4 with the insertion ofadvertisement media content (i.e., fileAd.ts) to replace the middlemedia segment file (i.e., fileSequence2681.ts).

In one embodiment, the content manager 150 performs the advertisementinsertion or advertisement replacement on the network-side before anycontent is delivered to the customer premises equipment 170. In thisembodiment, the content manager 150 receives a playlist from the videoencoder 130 that includes splice point tags which align the splicepoints in the content with the boundaries of the media segment files,and manipulates the playlist before sending it to the customer premisesequipment 170. In one embodiment, the content manager 150 includes adecision engine that uses a prior art targeted advertisement process toselect an advertisement replacement that will target a characteristic orpreference of the subscriber using the customer premises equipment 170to request the content stream. The content manager 150 also selects theadvertisement replacement by comparing its encoding to the encoding ofthe media segment that it will replace to make sure they are the samemanner, that the length (i.e., play time) is the same, and that it is asingle file segment. Since the content manager 150 controls the workflowof the content publication, before it sends a playlist to the customerpremises equipment 170, it scans the splice point tags in the playlistfile, inserts or replaces the advertisement media segments, removes thesplice point tags from the playlist, and sends the modified playlistthat includes the replacement advertisement media content. An advantageof this embodiment is that it does not impact the customer premisesequipment 170, or necessitate any changes on the client side, becausethe advertisement insertion and advertisement replacement decisions andplaylist manipulation is performed by the content manager 150. Thus,making the advertisement insertion and advertisement replacementtransparent to the subscriber.

In another embodiment, the content manager 150 and the customer premisesequipment 170 share the responsibilities to perform the advertisementinsertion or advertisement replacement. The content manager 150 receivesa playlist from the video encoder 130 that includes splice point tagswhich align the splice points in the content with the boundaries of themedia segment files, and is responsible for making the advertisementinsertion and advertisement replacement decision, and communicating thedecision to the customer premises equipment 170. The customer premisesequipment 170 is responsible for downloading an advertisement mediasegment, and inserting the advertisement media segment or replacing amedia segment with the advertisement media segment after the customerpremises equipment 170 receives and interprets the playlist from thecontent manager 150.

Normally, the present invention may insert an advertisement, or replacean existing advertisement, in an HTTP live streaming playlist withoutconsidering time mismatch; however, in a time sensitive scenario, suchas live streaming, this has be carefully checked. An advertisementinsertion, or advertisement replacement with longer advertisementcontent, will add delay to the live content delivery. Similarly, anadvertisement replacement with shorter advertisement content may causeproblems for live streaming because the live segment may not beavailable when the advertisement replacement finishes. So the length ofthe advertisement segment, as well as the segmentation of advertisementcontent must be considered when making an advertisement insertion oradvertisement replacement decision.

FIG. 6 is a flow diagram that illustrates a method according to oneembodiment of the present invention. In particular, FIG. 6 illustratesthe communication between the video encoder 130, content manager 150,and the customer premises equipment 170.

The process 600 shown in FIG. 6, with reference to FIG. 1 and FIG. 2,begins when a subscriber operates the customer premises equipment 170 tosend a request for a content stream that includes splice points (step605). In one embodiment, the content stream is an MPEG-2 transportstream, and the splice points include SCTE 35 out points and SCTE 35 inpoints. The content manager 150 receives the request for the contentstream that includes splice points (step 610) and sends a request for aplaylist with splice point tags (step 615). The playlist includes anordered list of media segment files that represent the content stream,and splice point tags, where the splice point tags are aligned with themedia segment files to correspond to the splice points in the contentstream. In one embodiment, the playlist is an HTTP live streamingplaylist. The video encoder 130 receives the request for a playlist withsplice point tags (step 620), and generates media segment files to alignsegment boundaries of the media segment files with the splice points(step 625). The video encoder 130 generates the playlist with splicepoint tags (step 630), and sends the playlist with splice point tags(step 635). Thus, since the playlist includes a list of media segmentfiles and splice point tags, where a location of each splice point tagin the playlist corresponds to a position of a splice point in thecontent stream, the splice point tags and splice points will occurbefore or after a media segment file, but not during the streaming of amedia segment file. The content manager 150 receives the playlist withsplice point tags (step 640). The content manager 150 identifies aninsertion position in the playlist (step 645) by scanning the splicepoint tags in the playlist. In one embodiment, the content manager 150identifies a start of the insertion position by locating one of thesplice point tags that is an out point, and an end of the insertionposition by locating one of the splice point tags that is associatedwith an in point. In another embodiment, the content manager 150identifies a splice point tag that corresponds to an out point and an inpoint that are co-located. The content manager 150 then selects anadvertisement segment (step 650). In one embodiment, the content manager150 utilizes a prior art process to determine that the advertisingsegment is intended to target a characteristic or a preference of asubscriber, determines that an encoding for the advertisement segmentmatches an encoding for the media segment files, and when the insertionposition includes one of the media segment files (i.e., advertisementreplacement), determines that a duration of the advertisement segmentmatches a duration of the advertisement replacement. The content manager150 inserts the advertisement segment at the insertion position tocreate a modified playlist (step 655), removes the splice point tagsfrom the modified playlist (step 660), and sends the modified playlist(step 665). In one embodiment, the advertisement segment replaces one ofthe media segment files in the playlist. In another embodiment, theadvertisement segment adds the advertisement segment to the playlist.The customer premises equipment 170 receives the modified playlist (step670) and downloads the media segment files and advertisement segmentthat the modified playlist references (step 675).

Although the disclosed embodiments describe a fully functioning methodand system for translating splice points in a content stream intoplaylist tags for HTTP live streaming, the reader should understand thatother equivalent embodiments exist. Since numerous modifications andvariations will occur to those reviewing this disclosure, the method andsystem for translating splice points in a content stream into playlisttags for HTTP live streaming is not limited to the exact constructionand operation illustrated and disclosed. Accordingly, this disclosureintends all suitable modifications and equivalents to fall within thescope of the claims.

What is claimed is:
 1. A method, comprising: receiving, at a content manager having a hardware processor, a playlist that includes an ordered list of identifiers associated with media segment files, wherein the received playlist includes a plurality of duration tags that each indicate a duration of a media segment file and a plurality of splice point tags that each indicate a location of a splice point in the playlist; identifying, at the content manager, an insertion position in the received playlist based on the plurality of splice point tags, wherein the insertion position corresponds to a media segment file in the playlist that is to be replaced with at least one advertisement segment file; in response to identifying the insertion position in the received playlist, selecting, at the content manager, an advertisement segment file from a plurality of advertisement segment files based at least in part on a duration tag associated with the media segment file that is to be replaced; in response to selecting the advertisement segment file from the plurality of advertisement segment files, causing, at the content manager, the advertisement segment file to replace the media segment file at the insertion position to create a modified playlist; and transmitting, at the content manager, the modified playlist to one or more client devices.
 2. The method of claim 1, further comprising receiving, from the one or more client devices, a request for a content stream that includes splice points, wherein each of the splice points is associated with a position in the content stream and wherein the content stream is segmented into the media segment files and the splice points in the content stream are aligned with segment boundaries of the media segment files.
 3. The method of claim 2, further comprising segmenting the content stream into the media segment files to align the segment boundaries for the media segments files with the splice points in the content stream.
 4. The method of claim 1, wherein the inserting the advertisement segment file at the insertion position further comprises removing the media segment file that is to be replaced.
 5. The method of claim 1, wherein the inserting the advertisement segment file at the insertion position further comprises: scanning the plurality of splice point tags in the playlist; identifying a start of the insertion position by locating a first splice point tag of the plurality of splice point tags that is associated with an out point; and identifying an end of the insertion position by locating a second splice point tag of the plurality of splice points tags that is associated with an in point.
 6. The method of claim 1, further comprising: retrieving the media segment files and the advertisement segment file in accordance with the modified playlist; and transmitting the media segment files and the advertisement segment file to the one or more client devices.
 7. The method of claim 1, wherein the selecting the advertisement segment file is based at least in part on a characteristic or a preference of a subscriber and wherein a duration of the advertisement segment file matches a duration of play time indicated by the duration tag of the media segment file that is to be replaced by the advertisement segment file.
 8. A content delivery system, the system comprising: a memory that stores computer executable instructions; and a hardware processor that, when executing the computer executable instructions stored in the memory, is configured to: receive a playlist that includes an ordered list of identifiers associated with media segment files, wherein the received playlist includes a plurality of duration tags that each indicate a duration of a media segment file and a plurality of splice point tags that each indicate a location of a splice point in the playlist; identify an insertion position in the received playlist based on the plurality of splice point tags, wherein the insertion position corresponds to a media segment file in the playlist that is to be replaced with at least one advertisement segment file; in response to identifying the insertion position in the received playlist, select an advertisement segment file from a plurality of advertisement segment files based at least in part on a duration tag associated with the media segment file that is to be replaced; in response to selecting the advertisement segment file from the plurality of advertisement segment files, cause the advertisement segment file to replace the media segment file at the insertion position to create a modified playlist; and transmit the modified playlist to one or more client devices.
 9. The content delivery system of claim 8, wherein the hardware processor is further configured to receive, from the one or more client devices, a request for a content stream that includes splice points, wherein each of the splice points is associated with a position in the content stream and wherein the content stream is segmented into the media segment files and the splice points in the content stream are aligned with segment boundaries of the media segment files.
 10. The content delivery system of claim 9, wherein the hardware processor is further configured to segment the content stream into the media segment files to align the segment boundaries for the media segments files with the splice points in the content stream.
 11. The content delivery system of claim 8, wherein the hardware processor is further configured to remove the media segment file that is to be replaced.
 12. The content delivery system of claim 8, wherein the hardware processor is further configured to: scan the plurality of splice point tags in the playlist; identify a start of the insertion position by locating a first splice point tag of the plurality of splice point tags that is associated with an out point; and identify an end of the insertion position by locating a second splice point tag of the plurality of splice points tags that is associated with an in point.
 13. The content delivery system of claim 8, wherein the hardware processor is further configured to: retrieve the media segment files and the advertisement segment file in accordance with the modified playlist; and transmit the media segment files and the advertisement segment file to the one or more client devices.
 14. The content delivery system of claim 8, wherein the selecting the advertisement segment file is based at least in part on a characteristic or a preference of a subscriber and wherein a duration of the advertisement segment file matches a duration of play time indicated by the duration tag of the media segment file that is to be replaced by the advertisement segment file.
 15. A non-transitory computer-readable medium comprising computer-executable instructions that, when executed by a processor, cause the processor to perform a method, the method comprising: receiving a playlist that includes an ordered list of identifiers associated with media segment files, wherein the received playlist includes a plurality of duration tags that each indicate a duration of a media segment file and a plurality of splice point tags that each indicate a location of a splice point in the playlist; identifying an insertion position in the received playlist based on the plurality of splice point tags, wherein the insertion position corresponds to a media segment file in the playlist that is to be replaced with at least one advertisement segment file; in response to identifying the insertion position in the received playlist, selecting an advertisement segment file from a plurality of advertisement segment files based at least in part on a duration tag associated with the media segment file that is to be replaced; in response to selecting the advertisement segment file from the plurality of advertisement segment files, causing the advertisement segment file to replace the media segment file at the insertion position to create a modified playlist; and transmitting the modified playlist to one or more client devices.
 16. The non-transitory computer-readable medium of claim 15, wherein the method further comprises receiving, from the one or more client devices, a request for a content stream that includes splice points, wherein each of the splice points is associated with a position in the content stream and wherein the content stream is segmented into the media segment files and the splice points in the content stream are aligned with segment boundaries of the media segment files.
 17. The non-transitory computer-readable medium of claim 16, wherein the method further comprises segmenting the content stream into the media segment files to align the segment boundaries for the media segments files with the splice points in the content stream.
 18. The non-transitory computer-readable medium of claim 15, wherein the inserting the advertisement segment file at the insertion position further comprises removing the media segment file that is to be replaced.
 19. The non-transitory computer-readable medium of claim 15, wherein the inserting the advertisement segment file at the insertion position further comprises: scanning the plurality of splice point tags in the playlist; identifying a start of the insertion position by locating a first splice point tag of the plurality of splice point tags that is associated with an out point; and identifying an end of the insertion position by locating a second splice point tag of the plurality of splice points tags that is associated with an in point.
 20. The non-transitory computer-readable medium of claim 15, wherein the method further comprises: retrieving the media segment files and the advertisement segment file in accordance with the modified playlist; and transmitting the media segment files and the advertisement segment file to the one or more client devices.
 21. The non-transitory computer-readable medium of claim 15, wherein the selecting the advertisement segment file is based at least in part on a characteristic or a preference of a subscriber and wherein a duration of the advertisement segment file matches a duration of play time indicated by the duration tag of the media segment file that is to be replaced by the advertisement segment file. 